package pro.cherish.smartfile.common.exception;

import cn.hutool.core.util.StrUtil;
import pro.cherish.smartfile.common.enums.ExceptionEnum;

import java.io.Serializable;

/**
 * @author 创建人：lys
 * @version 版本号：V1.0
 * <p>
 * ***************************修订记录************************************
 * 2020-11-06 lys 创建该类功能。
 * **********************************************************************
 * </p>
 * @ClassName 类名：SmartFileRetryException
 * @Description 功能说明：
 * <p>
 * 200,201,202 当前块上传成功，不需要重传
 * 404,415,500,501,当前块上传失败，会取消整个文件上传
 * 其他状态码：出错了，但是会自动重试上传
 * <a href ="https://www.cnblogs.com/xiahj/p/vue-simple-uploader.html">详见博客中图片 </a>
 * fixme 全局拦截发现此异常实例则直接使用503重传，目前使用的是：网络传输异常时重试，只要“完整传输到后台”（并未确保已经完整落地到指定磁盘位置，通过合并校验处校验），都是直接返回分块上传成功
 * </p>
 * **********************************************************************
 * @date 创建日期： 2020-11-06 lys
 */
public class SmartFileRetryException extends CommonException {
    public SmartFileRetryException(String msg) {
        super(msg);
    }

    public SmartFileRetryException(String msg, Serializable code) {
        super(msg, code);
    }

    public SmartFileRetryException(ExceptionEnum baseEnum) {
        super(baseEnum.getMsg(), baseEnum.getCode());
    }

    @Override
    public String toString() {
        Serializable code = super.getCode();
        String message = super.getMessage();
        return StrUtil.format("BusinessException=[code={}，message={}]", code, message);
    }
}
